package com.trainoo.consulclient.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.MessageFormat;


/**
 * @Auther: zt
 * @Date: 2019/12/3 14:44
 * @Description:
 */
@RestController
@ConfigurationProperties("xiaoming")
public class DcController {

    @Autowired
    DiscoveryClient discoveryClient;

    /**
     * 使用consul作为注册中心
     */
    @GetMapping("/dc")
    public String dc(){
        String services = "Services: " + discoveryClient.getServices();
        System.out.println(services);
        return services;
    }

    /**
     * 使用consul作为配置中心
     * 在Key/Values config/consul-client/application-test中配置内容如下：
     * xiaoming:
     *   age: 24
     *   sex: male
     *
     * 可以使用以下方式注入
     * 一、使用@ConfigurationProperties + getter/setter方式注入配置信息（这种方式注入的·会·实时刷新 - pom需要引入相关依赖）
     * 二、使用@Value方式注入配置信息（这种方式注入的·不会·实时刷新）
     *
     * 注意：配置文件名必须为`bootstrap.properties`, 使用`application.properties`无法读取到配置信息
     */
    @GetMapping("/getProperties")
    public String getProperties(){
        String xiaoming = MessageFormat.format("xiaoming:[age={0}, sex={1}, xmAge={2}]", age, sex, xmAge);
        System.out.println(xiaoming);
        return xiaoming;
    }

    @Value("${xiaoming.age}")
    private int xmAge;
    private String sex;
    private int age;

    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
